package com.exampl.health.service;

import com.exampl.health.entity.HealthData;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.Date;
import java.util.List;

/**
 * 健康数据访问接口
 */
@Repository
public interface HealthDataDao {
    /**
     * 根据用户ID查询健康数据
     * @param userId 用户ID
     * @return 健康数据列表
     */
    List<HealthData> selectByUserId(@Param("userId") Integer userId);

    /**
     * 根据数据ID查询健康数据
     * @param dataId 数据ID
     * @return 健康数据对象
     */
    HealthData selectById(@Param("dataId") Integer dataId);

    /**
     * 插入健康数据
     * @param healthData 健康数据对象
     * @return 影响的行数
     */
    int insert(HealthData healthData);

    /**
     * 更新健康数据
     * @param healthData 健康数据对象
     * @return 影响的行数
     */
    int update(HealthData healthData);

    /**
     * 删除健康数据
     * @param dataId 数据ID
     * @return 影响的行数
     */
    int delete(@Param("dataId") Integer dataId);

    /**
     * 根据日期范围查询健康数据
     * @param userId 用户ID
     * @param startDate 开始日期
     * @param endDate 结束日期
     * @return 健康数据列表
     */
    List<HealthData> selectByDateRange(@Param("userId") Integer userId,
                                       @Param("startDate") Date startDate,
                                       @Param("endDate") Date endDate);

    /**
     * 统计用户健康数据数量
     * @param userId 用户ID
     * @return 数据数量
     */
    int countByUserId(@Param("userId") Integer userId);
}